 #include<stdio.h>
 #include<termios.h>
 #include<string.h>
 #include<sys/types.h>
 #include<sys/stat.h>
 #include<fcntl.h>
 #include<unistd.h>
 #include"gps.h"
//函数：get_gps_data
//描述：从数据缓冲区解析GPS数据，并填充到结构体中
//参数：
//-buff:指向包含GPS数据的缓冲区的指针
//-gps_data:指向结构体gprmc_data的指针，用于存储解析后的GPS数据
//返回值：无
void get_gps_data(char*buff,struct gprmc_data *gps_data){
    char *p = NULL;

    //在缓冲区中查找以"$GPRMC"开头的位置
    p = strstr(buff, "$GPRMC");


    //使用sscanf函数从字符串p开始按指定格式解析数据，并存储到gps_data结构体中对应的成员变量中
    sscanf(p,"$GPRMC,%d.00,%c,%f,%c,%f,%c,%f,,%d,,,%c,%*c",
    &(gps_data->time), //UTC时间（hhmmss）
    &(gps_data->state), //状态（A=有效，V=无效）
    &(gps_data->latitude), //纬度（ddmm.mmmm格式）
    &(gps_data->NS), //纬度半球（N=北半球，S=南半球）
    &(gps_data->longitude), //经度（dddmm.mmmm格式）
    &(gps_data->EW),//经度半球（E=东经，W=西经）
    &(gps_data->speed), //地面速率（节）
    &(gps_data->date),//UTC日期（ddmmyy）
    &(gps_data->mode)); //模式指示（A=自主定位，D=差分定位）

    //打印解析后的部分GPS数据，用于验证解析是否正确（可选）
    printf("state:%c,%c:%f,%c:%f\n", gps_data->state, gps_data->NS, gps_data->latitude, gps_data->EW, gps_data->longitude);
 }
